from api import log
from config import H0ST # 导入配置文件中的主机地址


class ApiRegisterLogin:
    """用户注册登录相关API接口封装类"""

    def __init__(self, session):
        """
        初始化API接口类

        :param session: requests会话对象，用于保持会话状态
        """
        self.session = session  # 保存会话对象

        # 定义API接口URL
        self.__img_code = H0ST + "/common/public/verifycode1/{}"  # 图片验证码接口

        self.__phone_code = H0ST + "/member/public/sendSms/"  # 短信验证码接口

        self.__register = H0ST + "/member/public/reg"  # 用户注册接口

        self.__login = H0ST + "/member/public/login"  # 用户登录接口

        self.__login_status = H0ST + "/member/public/islogin"  # 登录状态检查接口

    def api_img_code(self, random):
        """
        获取图片验证码

        :param random: 随机数参数，用于防止缓存
        :return: 包含图片验证码的响应对象
        """
        log.info("正在调用获取图片验证码接口，请求方法：get 请求url:{}".format(self.__img_code.format(random)))
        # 格式化URL，将随机数插入到路径中
        return self.session.get(url=self.__img_code.format(random))
 
    def api_phone_code(self, phone, imgVeifityCode):
        """
        发送短信验证码

        :param phone: 手机号码
        :param imgVeifityCode: 图片验证码
        :return: 短信发送请求的响应对象
        """
        # 构造请求数据
        data = {
            "phone": phone,
            "imgVeifityCode": imgVeifityCode,
            "type": "reg"  # 请求类型为注册
        }
        log.info("正在调用获取短信验证码接口，请求方法：post 请求url:{} 请求数据：{}".format(self.__phone_code, data))
        return self.session.post(url=self.__phone_code, data=data)

    def api_register(self, phone, imgVeifityCode, password, phonecode):
        """
        用户注册

        :param phone: 手机号码
        :param imgVeifityCode: 图片验证码
        :param password: 密码
        :param phonecode: 短信验证码
        :return: 注册请求的响应对象
        """
        data = {
            "phone": phone,
            "imgVeifityCode": imgVeifityCode,
            "password": password,
            "phonecode": phonecode,
            "dy_sever": "on",  # 服务协议同意标志
            "invitephone": "",  # 邀请人手机号（可选）
        }
        log.info("正在调用注册接口，请求方法：post 请求url:{} 请求数据：{}".format(self.__register, data))
        return self.session.post(url=self.__register, data=data)

    def api_login(self, keyword, password):
        """
        用户登录

        :param keyword: 登录标识（可能是用户名、手机号或邮箱）
        :param password: 密码
        :return: 登录请求的响应对象
        """
        data = {
            "keyword": keyword,
            "password": password,
        }
        log.info("正在调用登录接口，请求方法：post 请求url:{} 请求数据：{}".format(self.__login, data))
        return self.session.post(url=self.__login, data=data)

    def api_login_status(self):
        """
        检查用户登录状态

        :return: 登录状态检查的响应对象
        """
        log.info("正在调用登录状态检查接口，请求方法：post 请求url:{}".format(self.__login_status))
        # 注意：原代码中方法参数 keyword, password 未使用，已移除
        return self.session.post(url=self.__login_status)